VisualStudio2013でC++のプログラムを作るとプロジェクトのサイズが以上に大きくなるので原因を調べてみました。
概要
VisualStudio2013の通常設定でC++のプログラムを作っているとプログラムのサイズはとても小さいのにプロジェクトフォルダのサイズが50MBや100MBになってしまいます。フォルダの中を調べると.sdfとipachのサイズがかなり大きくなっています。この2つのファイルはintellisenseというコード補完機能のために生成されるファイルのようですが(なんか違うかもしれない)、一つのプロジェクトで100MBも無駄に領域を取られるのは気分が悪いので対策を調べてみました。
対策1
Googleで調べると.sdfとipachの保存場所を変更するという話題が多くヒットします。これは.sdfとipachがなくなるわけではありませんがDropBoxなどのオンラインストレージにプログラムを保存している場合はそこの容量節約に有効です。やり方はたくさん情報がありそうなので省略。
対策2(本命)
上の方法では結局保存される場所が変わるだけで巨大ファイルが毎回できるのには変わりない(はず)です。やはり気持ち悪い。Intellisenseを無効化すればいいのですがそれはそれで不便です。そこでVisual Studioの設定をいろいろいじってみました。
○ sdfに対する対策
Visual Studioの ツール -> オプション を選ぶと別ウィンドウが開きます。そこの テキストエディター -> C/C++ ->詳細 を選び、そこの 参照/ナビゲーション -> 暗黙的なファイルの無効化 を Tureにすると一気にsdfファイルのサイズが小さくなりました。(下図)
自分の適当な解釈ですが、intellisenseはデフォルトでは、includeしたファイルデータのキャッシュだけでなくincludeしたファイルがincludeしたファイル…と、どんどんファイルをたどってすべてのファイルのキャッシュを作ってしまうのでsdfが肥大化するみたいです。上の設定をすることでincludeのincludeにはいかないようになるのだと思います。これでsdfは小さくなりますがincludeのincludeにあるものの補完はできないので別ファイルのクラスを継承しているものなどをincludeしたら完全な補完ができなくなるのかもしれません。まだ確認していませんが。まあ、補完をしっかりしてほしい場合はこの設定はやめておくべきだと思います。
○ipachに対する対策
新しいプロジェクトを作る場合は、c++のプログラムを作るときに下のようなウィンドウが出ると思うので次へを押して、追加オプションのプリコンパイル済みヘッダのチェックを外します。あとはいつも通りにやります。これだけでipachフォルダは作られなくなるはずです。
すでに作ったプロジェクトの場合は、下のようにソリューションエクスプローラでプロジェクト(Test1に当たる部分)を選択してスパナアイコンをクリックします。出てきたウィンドウで 構成プロパティ -> C/C++ -> プリコンパイル済みヘッダ を選び、 プリコンパイル済みヘッダの欄を使用しないにします。これでOK。
何をやっているのかは、自分の勝手な解釈ですが、ipachはコンパイルを早くするためのファイルだと思います。プリコンパイルヘッダというのはヘッダファイルをあらかじめコンパイルしておいたもので(そのまま!)これをやっておくと大きなプログラムではコンパイルが劇的に早くなります。C++のプロジェクトを作ったらstdafx.hとかいうのが自動生成されると思いますがここにincludeしたやつがプリコンパイルされるのだと思います。これを消すとコンパイルの時間がいつもより多くかかります(特に大きなプロジェクトでは)。intellisenseと関わっているかはわかりませんが、100MBの容量を取られるのが惜しいようなプログラムでは無効にしておいてよいでしょう。(知りませんが)
どちらの設定も、いつでも変更できるので、作っている途中はONにしておいて作り終わったものは容量節約のためにOFFにしておくという方法がとれます。